# -*- coding: utf-8 -*-
"""
干部管理权限提取模块，处理干部管理权限的提取
"""

import sys
import os

# 添加项目根目录到系统路径
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from llm import quick_chat
from prompts import get_system_prompt
from .config import LLM_CONFIG, USE_SILICONFLOW
from .clean_llm_result import clean_llm_result
from . import extract_person_info_for_gbglqx, assemble_gbglqx_result


async def extract_gbglqx(bfyrs_json: str) -> str:
    """提取干部管理权限"""
    try:
        # 使用common.py中的函数拼装用户提示词
        prompt_result = extract_person_info_for_gbglqx(bfyrs_json)
        gbglqx_user_prompts = prompt_result.get("result", [])

        if not gbglqx_user_prompts:
            print("没有获取到被反映人信息")
            return ""

        print(f"获取到 {len(gbglqx_user_prompts)} 个被反映人的用户提示词")

        # 根据全局配置选择配置
        if USE_SILICONFLOW:
            base_url = LLM_CONFIG["BASE_URL_dev"]
            model = LLM_CONFIG["MODEL_dev"]
            print(f"使用硅基流动配置: {base_url}, 模型: {model}")
        else:
            base_url = LLM_CONFIG["BASE_URL_1238"]
            model = LLM_CONFIG["MODEL_14B"]
            print(f"使用原有配置: {base_url}, 模型: {model}")

        # 对每个被反映人调用模型获取干部管理权限
        gbglqx_results = []
        for prompt in gbglqx_user_prompts:
            try:
                # 根据配置决定是否传递API密钥
                if USE_SILICONFLOW:
                    result = quick_chat(
                        base_url=base_url,
                        model=model,
                        system_prompt=get_system_prompt("gbglqx"),
                        user_prompt=prompt,
                        api_key=LLM_CONFIG["API_KEY"],
                        temperature=0.5,
                    )
                else:
                    result = quick_chat(
                        base_url=base_url,
                        model=model,
                        system_prompt=get_system_prompt("gbglqx"),
                        user_prompt=prompt,
                        temperature=0.5,
                    )
                gbglqx_result = result.text.strip()
                # 清洗模型输出，移除think标签和Markdown代码块标记
                cleaned_gbglqx_result = clean_llm_result(gbglqx_result)
                gbglqx_results.append(cleaned_gbglqx_result)
                print(f"干部管理权限提取结果: {prompt} -> {cleaned_gbglqx_result}")
            except Exception as e:
                print(f"提取干部管理权限失败: {str(e)}")
                gbglqx_results.append("无干部管理权限")

        # 使用common.py中的函数拼装结果
        final_result = assemble_gbglqx_result(bfyrs_json, gbglqx_results)
        final_json = final_result.get("result", "")

        print(f"干部管理权限拼装完成，结果: {final_json}")
        return final_json

    except Exception as e:
        print(f"提取干部管理权限失败: {str(e)}")
        return ""
